/*************************************************************************
	> File Name: oj-542.cpp
	> Author: Wang Bo
	> Mail: 1276106221@qq.com
	> Created Time: 2020年11月22日 星期日 15时30分00秒
 ************************************************************************/

#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;

int t, n, h, r, s[1005], scnt, e[1005];
//arr 邻接矩阵，表示x,y点是否相同（相切或相交）
//check 去重数组
//ball 球的坐标
int arr[1005][1005], check[1005], ball[1005][3];

int func(int now) {
    //如果是终点，返回1
    if (e[now] == 1) {
        return 1;
    }
    for (int i = 1; i <= n; ++i) {
        //如果两点连通，且未走过
        //从该点开始递归深搜
        if (arr[now][i] && check[i] == 0) {
            check[i] = 1;
            //如果递归深搜可以走到终点，返回1
            if (func(i)) {
                return 1;
            }
        }
    }
    //搜不到终点，则返回0
    return 0;
}

int main() {
    cin >> t;
    while (t--) {
        //每次开始读入之前，清零scnt，终点数组，邻接矩阵和去重数组
        scnt = 0;
        memset(e, 0, sizeof(e));
        memset(arr, 0, sizeof(arr));
        memset(check, 0, sizeof(check));
        cin >> n >> h >> r;
        for (int i = 1; i <= n; ++i) {
            cin >> ball[i][0] >> ball[i][1] >> ball[i][2];
            if (ball[i][2] <= r) {
                //判断是否可以做起点
                s[scnt++] = 1;
            }
            if (ball[i][2] + r >= h) {
                //判断是否可以做终点
                e[i] = 1;
            }
            for (int j = 1; j < i; ++j) {
                //判断两球是否相交或相切
                int x0 = ball[i][0] - ball[j][0];
                int y0 = ball[i][1] - ball[j][1];
                int z0 = ball[i][2] - ball[j][2];
                if (sqrt(x0 * x0 + y0 * y0 + z0 * z0) <= 2 * r) {
                    //如果相交或相切，邻接矩阵两者置1
                    arr[i][j] = arr[j][i] = 1;
                }
            }
        }
        int f = 0;
        //以每个起点开始搜索，是否能找到终点
        for (int i = 0; i < scnt; ++i) {
            if (check[s[i]] == 0) {
                check[s[1]] = 1;
                if (func(s[i])) {
                    cout << "Yes" << endl;
                    f = 1;
                    break;
                }
            }
        }
        if (f == 0) {
            cout << "No" << endl;
        }
    }
    return 0;
}
